// Copyright (C) 2012 by Johann Duscher <jonny.dee@gmx.net>
//
// This file is part of barcodeart-pp.
//
// barcodeart-pp is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// barcodeart-pp is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with barcodeart-pp. If not, see <http://www.gnu.org/licenses/>.

#include <cassert>

#include <barcodeart/IBarCode.hpp>

#include "barcodeart/asciiwriter/ASCIIWriter.hpp"
#include "barcodeart/asciiwriter/ASCIIWriterConfig.hpp"


namespace barcodeart
{

namespace asciiwriter
{

ASCIIWriter::ASCIIWriter()
{
}

int ASCIIWriter::write(std::ostream& out, const IBarCode& barCode, const IWriterConfig& iConfig) const
{
    const ASCIIWriterConfig& config = dynamic_cast<const ASCIIWriterConfig&>(iConfig);

    /* data */
    for(int y = 0; y < barCode.getHeight(); y++)
    {
        for(int x = 0; x < barCode.getWidth(); x++)
        {
            if(barCode.isBlack(y, x))
                out << config.getBlack() << config.getBlack();
            else
                out << config.getWhite() << config.getWhite();
        }

        out << "\n";
    }

    return 0;
}

}

}
